import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";


export default [
    {files: ["**/*.{js,mjs,cjs,ts,vue}"]},
    {languageOptions: {globals: globals.browser}},
    pluginJs.configs.recommended,
    ...tseslint.configs.recommended,
    ...pluginVue.configs["flat/essential"],
    {
        files: ["**/*.{vue,ts,js,mjs,cjs}"],
        languageOptions: {
            parserOptions: {parser: tseslint.parser}
        },
        rules: {
            "@typescript-eslint/no-unused-expressions": "off", // 未使用表达式提示
            "@typescript-eslint/no-unused-vars": "off", // 未使用变量提示
            '@typescript-eslint/ban-ts-ignore': 'off',
            '@typescript-eslint/explicit-function-return-type': 'off',
            '@typescript-eslint/no-explicit-any': 'off',
            '@typescript-eslint/no-var-requires': 'off',
            '@typescript-eslint/no-empty-function': 'off',
            '@typescript-eslint/no-use-before-define': 'off',
            '@typescript-eslint/ban-ts-comment': 'off',
            '@typescript-eslint/ban-types': 'off',
            '@typescript-eslint/no-non-null-assertion': 'off',
            '@typescript-eslint/explicit-module-boundary-types': 'off',
            '@typescript-eslint/no-redeclare': 'error',
            '@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
            'vue/custom-event-name-casing': 'off',
            'vue/attributes-order': 'off',
            'vue/one-component-per-file': 'off',
            'vue/html-closing-bracket-newline': 'off',
            'vue/max-attributes-per-line': 'off',
            'vue/multiline-html-element-content-newline': 'off',
            'vue/singleline-html-element-content-newline': 'off',
            'vue/attribute-hyphenation': 'off',
            'vue/html-self-closing': 'off',
            'vue/no-multiple-template-root': 'off',
            'vue/require-default-prop': 'off',
            'vue/no-v-model-argument': 'off',
            'vue/no-arrow-functions-in-watch': 'off',
            'vue/no-template-key': 'off',
            'vue/no-v-html': 'off',
            'vue/comment-directive': 'off',
            'vue/no-parsing-error': 'off',
            'vue/no-deprecated-v-on-native-modifier': 'off',
            'vue/multi-word-component-names': 'off',
            'no-useless-escape': 'off',
            'no-sparse-arrays': 'off',
            'no-prototype-builtins': 'off',
            'no-constant-condition': 'off',
            'no-use-before-define': 'off',
            'no-restricted-globals': 'off',
            'no-restricted-syntax': 'off',
            'generator-star-spacing': 'off',
            'no-unreachable': 'off',
            'no-multiple-template-root': 'off',
            'no-unused-vars': 'off', // 没有使用的变量 'error',
            'no-v-model-argument': 'off',
            'no-case-declarations': 'off',
            'no-console': 'error',
            'no-redeclare': 'off',
            'no-constant-binary-expression': 'off' // 用于检测代码中重复的二元表达式。这个规则的目的是减少代码中的重复逻辑，提高代码的可读性和可维护性
        }
    },
];
